<?php
namespace Zxf5115\Laravel\Kernel\Builders;

use Exception;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\Relation;

/**
 * @author zhangxiaofei [<1326336909@qq.com>]
 * @dateTime 2025-09-24
 *
 * 查询字段处理器类
 */
class FieldBuilder
{
  /**
   * 当前操作模型对象
   */
  protected $query;

  /**
   * 初始化请求处理器类
   *
   * @param Builder $query 当前操作模型对象
   */
  public function __construct(Builder $query)
  {
    $this->query = $query;
  }


  /**
   * 获取当前服务实例
   *
   * @param Builder $query 当前操作模型对象
   * @return self
   */
  public static function myself(Builder $query) : self
  {
    // 使用基础服务类
    return new self($query);
  }


  /**
   * 处理请求查询逻辑中查询字段
   *
   * @param string|array $fieldParams 查询字段
   * @param string $relationName 关联对象名称
   */
  public function buildField(string|array $fieldParams, string $relationName) : void
  {
    if(array_key_exists($relationName, $fieldParams))
    {
      // 构建查询字段
      $this->query->select($fieldParams[$relationName]);
    }

    if(array_key_exists(0, $fieldParams) && !is_array($fieldParams[0]))
    {
      $this->query->select($fieldParams);
    }
  }
}
